#ifndef HUFFMANCODES_H
#define HUFFMANCODES_H

#include <unordered_map>
#include <string>
#include "huffmanNode.h" // 包含HuffmanNode结构体的声明
#include "huffmanTree.h" // 包含HuffmanTree结构体的声明

// 生成哈夫曼编码
void generateCodes(HuffmanNode* root, const std::string& str, std::unordered_map<std::string, std::string>& huffmanCode);
// 编码字符串（最长匹配）
std::string encodeLongestMatch(const std::string& text, int startIndex, const std::unordered_map<std::string, std::string>& huffmanCode);
// 编码字符串
std::string encode(const std::string& text, std::unordered_map<std::string, std::string>& huffmanCode);

// 解码字符串
std::string decode(HuffmanNode* root, const std::string& encodedStr);

// 计算每个字符的频率
std::unordered_map<std::string, int> getfr(std::string text);

// 可能还有其他与哈夫曼编码相关的函数声明...

#endif // HUFFMANCODES_H